// URL参数处理工具函数

/**
 * 从当前页面URL中获取指定参数的值
 * @param {string} paramName - 参数名称
 * @returns {string|null} - 参数值，如果不存在则返回null
 */
export const getUrlParam = (paramName) => {
  console.log(`开始获取URL参数: ${paramName}`);
  console.log('当前完整URL:', window.location.href);
  console.log('window.location.search:', window.location.search);
  console.log('window.location.hash:', window.location.hash);
  
  // 尝试从search中获取参数
  const searchParams = new URLSearchParams(window.location.search);
  let paramValue = searchParams.get(paramName);
  
  console.log(`从search获取的${paramName}:`, paramValue);
  
  // 如果search中没有参数，尝试从hash中获取
  if (!paramValue && window.location.hash) {
    const hashPart = window.location.hash;
    console.log('尝试从hash中解析参数:', hashPart);
    
    // 检查hash中是否包含查询参数
    const questionMarkIndex = hashPart.indexOf('?');
    if (questionMarkIndex !== -1) {
      const queryString = hashPart.substring(questionMarkIndex + 1);
      console.log('从hash中提取的查询字符串:', queryString);
      
      const hashParams = new URLSearchParams(queryString);
      paramValue = hashParams.get(paramName);
      
      console.log(`从hash获取的${paramName}:`, paramValue);
    }
  }
  
  // 如果还是没有参数，尝试解析完整URL
  if (!paramValue) {
    const fullUrl = window.location.href;
    const questionMarkIndex = fullUrl.indexOf('?');
    if (questionMarkIndex !== -1) {
      const queryString = fullUrl.substring(questionMarkIndex + 1);
      console.log('从完整URL提取的查询字符串:', queryString);
      
      // 移除可能的hash部分
      const cleanQueryString = queryString.split('#')[0];
      console.log('清理后的查询字符串:', cleanQueryString);
      
      const urlParams = new URLSearchParams(cleanQueryString);
      paramValue = urlParams.get(paramName);
      
      console.log(`从完整URL获取的${paramName}:`, paramValue);
    }
  }
  
  console.log(`最终获取的${paramName}参数值:`, paramValue);
  return paramValue;
};

/**
 * 为URL添加或更新查询参数
 * @param {string} url - 原始URL
 * @param {string} paramName - 参数名称
 * @param {string} paramValue - 参数值
 * @returns {string} - 更新后的URL
 */
export const addUrlParam = (url, paramName, paramValue) => {
  console.log(`为URL添加参数: ${paramName}=${paramValue}`);
  console.log('原始URL:', url);
  
  if (!paramValue) {
    console.log('参数值为空，返回原始URL');
    return url;
  }
  
  try {
    const urlObj = new URL(url);
    urlObj.searchParams.set(paramName, paramValue);
    const newUrl = urlObj.toString();
    
    console.log('更新后的URL:', newUrl);
    return newUrl;
  } catch (error) {
    console.error('URL解析失败:', error);
    
    // 如果URL解析失败，使用简单的字符串拼接方式
    const separator = url.includes('?') ? '&' : '?';
    const newUrl = `${url}${separator}${paramName}=${encodeURIComponent(paramValue)}`;
    
    console.log('使用字符串拼接的URL:', newUrl);
    return newUrl;
  }
};
